home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 March
/
EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso
/
earcd
/
program
/
ixemlsrc.lha
/
ixemul
/
important.readme
< prev
next >
Wrap
Text File
|
1996-01-10
|
2KB
|
40 lines
Attention:
Starting with ixemul.library version 42.0 the ssystem() function is no longer
supported. The only application that uses this function (to my knowledge)
is 'gcc'. Using 'gcc' with the current library will put up a requester telling
you that ssystem() is no longer available.
Fortunately, every gcc-distribution also contained a gccv executable.
Delete your 'gcc' executable and rename 'gccv' to 'gcc'. This version is
completely identical to 'gcc', but it doesn't use ssystem(). Better, this
version supports the -pipe option.
Future gcc-versions (hopefully starting from version 2.7.2) will no longer
make use of the ssystem() function, and the separate 'gccv' executable will
disappear.
Why was ssystem() removed? This function was a precursor to the standard Unix
vfork()/execve() function pair. Both spawn a new process (for example,
'gcc' starts 'cpp', followed by 'cc1', followed by 'as'), but the
vfork()/execve() method integrates seamlessly with the ixemul.library (to
be more specific, the new process is within the same process group), while
ssystem() uses the Amiga kernel function RunCommand(), which runs the new
process outside the parent's process group. Usually this is no problem, but
once you break a make-run using Ctrl-C, the library kills all processes
within the same process group. Because ssystem() puts the new process outside
the current process group, this will lead to a situation where the parent
has been killed, but the child (the new process created with RunCommand) lives
on. Once the child dies, it is without a parent, which most probably leads to a
crash.
Due to the fact that 1) hardly anyone knew about this function, and 2) it
is a dangerous function to use since vfork()/execve() does a much better
job, I have decided to remove it from the library.
If it turns out that there are many more programs that use ssystem()
(besides gcc), then I might reconsider this decision. But for now it is no
longer supported in the interest of stability.
Hans Verkuil (hans@wyst.hobby.nl)